Temporal-alignment persistent scheduling

ABSTRACT

Scheduling on a wireless communications channel is carried out on the basis of demanded traffic on the channel. A root scheduling cycle is set on the basis of traffic levels, and alignment parameters are defined to define how traffic is to be allocated to the scheduling cycle.

FIELD

The present disclosure relates to scheduling of communications in the field of wireless communication.

BACKGROUND

Numerous wireless communication protocols rely on scheduling for granting access to a communication channel. Scheduling is used to ensure that transmissions take place at times which are expected by potential recipient devices, and to ensure that the channel is in use only by a single transmitting device at a time. In certain standardized communications protocols, scheduling is carried out according to a strict set of rules to ensure that all devices can be configured to be ready to receive scheduling information from a centralized source, often a Base Station, to determine if they should then configure themselves to transmit information thereafter and in what time slot.

DESCRIPTION OF DRAWINGS

FIG. 1 is a schematic view of a wireless communications network in accordance with an embodiment.

FIG. 2 is a schematic view of the architecture of a base station of the network of FIG. 1.

FIG. 3 is a schematic view of the architecture of a mobile station of the network of FIG. 1.

FIG. 4 is a diagram of a downlink transmission procedure using persistent scheduling implemented on the network of FIG. 1.

FIG. 5 is a diagram of an uplink transmission procedure using persistent scheduling implemented on the network of FIG. 1.

FIG. 6 is a schematic diagram of a TSN network in which the presently described embodiment can be implemented.

FIG. 7 is a periodic traffic model and a channel model for a conventional channel scheduling scheme.

FIG. 8 illustrates comparative examples of scheduling when period mismatch occurs.

FIG. 9 is a flow diagram of a scheduling procedure in accordance with an embodiment.

FIG. 10 is a flow diagram of an allocation procedure in accordance with an embodiment.

FIG. 11 is a timing diagram for scheduling and allocation in accordance with an embodiment.

FIG. 12 is a flow diagram of a method of calculating scheduling factors in accordance with an embodiment.

FIG. 13 is a flow diagram of a method of calculating an initial index in accordance with an embodiment.

FIG. 14 is a timing diagram for scheduling and allocation in accordance with examples of the described embodiment.

FIG. 15 is a graph plotting average delay and jitter for channel allocation in examples of the present disclosure.

FIG. 16 is a graph plotting cumulative distribution function of delay and jitter between examples of the present disclosure.

FIG. 17 is a graph plotting average delay between examples of the present disclosure.

FIG. 18 is a graph plotting computational cost of examples of the present disclosure.

DESCRIPTION OF EMBODIMENTS

Persistent scheduling (PS) is a channel scheduling scheme, which enables a sequence of periodic traffic packets to be served on a channel. Various embodiments of PS exist, for scheduling both on a downlink (i.e. from a base station, BS) or an uplink (i.e. from a connected device) according to a variety of technical standards in the field of wireless communication, such as 3GPPL LTE, LTE, 5G NR, IEEE 802.16.

In PS, the BS allocates a sequence of channel units, defined in the time domain, with a fixed gap interval and a fixed Modulation and Coding Scheme (MCS), according to characteristics of the traffic on the channel. For instance, in cellular networks, a BS can allocate periodic slots via Radio Resource Control (RRC) signaling or Layer 1/Layer 2 signaling to the associated device. Given a long enough channel coherence time, PS only requires one scheduling for a whole sequence of packets.

By contrast, Dynamic Scheduling (DS), concretely allocates resource to each packet to be transmitted, by issuing a Scheduling Grant (SG). Compared with DS, PS tends to consume less channel resource in control signaling, but PS can be less reliable because it does not respond packet-by-packet to channel state. Meanwhile, as PS has a lower control signaling requirement, it has a simpler network control procedure, which can reduce end-to-end latency. For these reasons, PS has been adopted for VoIP transmissions in classical cellular systems, and is considered to be one of the key scheduling schemes for critical periodical traffic in vehicle-to-X (V2X) and Ultra-Reliable Low-Latency Communication (URLLC)-enabled cellular systems.

One of the most challenging problems in PS is that its scheduling period often does not match the forthcoming traffic period. Given a fixed length of channel units, this is due to the fact that the scheduling period is an integer multiple of this channel unit length, while the traffic period can be any number.

For example considering a system running on integrated TSN and 5G, TSN traditionally relies on time-domain access on the physical medium with transmission windows as short as 10-20 μs, while 5G RAN exploits frequency domain multiplexing of users on time-slots or mini-slot in the order of the minimal 125 μs (considering a case with low MCS index and bandwidth). In these scenarios, a BS may schedule channel units with a fixed period that is either slightly bigger than, or smaller than, the traffic period. If the channel units are bigger than the traffic period, this can result in the latency gradually increasing over time, while if they are smaller, this can result in low channel utilization and relatively high jitter.

Embodiments disclosed herein seek to provide scheduling schemes for those period-mismatching scenarios, that satisfy the condition of using as little as channel resources, and that minimize the following two Key Performance Indicators (KPIs):

1) the transmission latency, and

2) jitter (i.e., the variance of the latency between two successive transmissions).

Specifically, a Temporal-Alignment Persistent Scheduling (TAPS) scheme is described, which, for any arbitrary traffic period, can persistently schedule every slot located directly after every packet arrival.

The TAPS scheme of the present disclosure is intended to schedule channel resources for periodical traffic in wireless networks. Some of the key structural features of this approach are described as follows.

N-Alignment Process

Given a series of periodically generated packets, a conventional PS scheme utilizes a single scheduling procedure for a BS to assign periodic channel units. The period of these channel units will remain unchanged for a fixed duration (e.g., 500 ms in 5G NR). After this duration, if the traffic is still active, the BS re-schedules channel units via a new PS procedure.

In the presently described embodiments, employing TAPS, a BS schedules channel units according to a variable period. The period length at a particular instant is revised according to a principle based on N different alignment cycles. Here, the required number N of alignment cycles is obtained by a recursion algorithm. Alignment aims to ensure that, for each assignment, the assigned slot is located directly after a corresponding packet arrival. During scheduling, the BS calculates alignment parameters and informs the associated device via control signaling. During transceiving, based on these alignment parameters, both the BS and the device can derive the exact slot index of each assigned channel unit by using the same approach. By doing so, the N-alignment process helps to find slots located directly after each packet arrival.

Transmission Duplication with Temporal Diversity

In standard technologies such as 5G, the frame and lattice structure used by a particular device for a standard-compliant waveform is governed by a set of parameters which are collectively known as a “numerology”. A feature of 5G technology is that a plurality of numerologies are permitted to coexist, which is known as a multi-numerology model.

For the bandwidth activated (defined) for communication, each device can have a different numerology depending upon the required data rates. In one example, a device may transmit duplicated using two or more numerologies, hence spreading the data by frequency.

Existing techniques duplicate messages using different numerologies simultaneously, which solely aims at solving the problem that transmission may not be reliable with a single path link. The presently disclosed Transmission Duplicated Time-Redundant TAPS (TD-TR-TAPS) scheme successively transmits duplicate messages with respect to time using different numerologies, which not only improves reliability, but also reduces transmission delay. Note that the transmission duplication with temporal diversity would reduce the transmission delay only if it was employed with the presently disclosed TAPS scheme, instead of conventional PS schemes.

In terms of implementation, TD-TR-TAPS can be employed in a dual connectivity solution, where the transmitter duplicates each data packet over two independent networks. Besides, TD-TR-TAPS can also be employed in fixed-length bundled transmission in which each packet contains not only data, but also forward error correction information; thus receivers can be exploited to achieve a hybrid automatic repeat request (HARQ)-like functionality.

System Description

FIG. 1 illustrates a wireless network 10, comprising a Base Station (BS) 100 and a plurality of user devices 200 in communication with the BS 100. The reader will appreciate that a user device may be of a variety of types—it may be a user device (user equipment) in the form of a hand-held device or other user oriented computing device, or it may be integrated into or an interface to a machine, such as an industrial machine, which may be automated or intended for user interaction.

FIG. 2 illustrates the architecture of a base station 100. As shown in FIG. 2, the base station is a computer apparatus, in structure and function. It may share certain features with general purpose computer apparatus, but some features may be implementation specific, given the specialised function for which the base station is to be put. The reader will understand which features can be of general-purpose type, and which may be required to be configured specifically for use in a wireless communications transmitter.

The base station 100 thus comprises one or more processors 104, either generally provisioned, or configured for other purposes such as mathematical operations, audio processing, managing a communications channel, and so on.

An input interface 106 provides a facility for receipt of user input actions. Such user input actions could, for instance, be caused by user interaction with a specific input unit including one or more control buttons and/or switches, a touchscreen, a keyboard, a mouse or other pointing device, a speech recognition unit enabled to receive and process speech into control commands, a signal processor configured to receive and control processes from another device such as a tablet or smartphone, or a remote-control receiver. This list will be appreciated to be non-exhaustive and other forms of input, whether user initiated or automated, could be envisaged by the reader. It will be appreciated that such user input actions would not normally be required in general operation, but may be required in installation or maintenance of the equipment.

Likewise, an output interface 114 is operable to provide a facility for output of signals to a user or another device. Such output could include a display signal for driving a local video display unit (VDU) or any other device.

A communications interface 108 implements a communications channel, whether broadcast or end-to-end, with one or more recipients of signals. In the context of the present embodiment, the communications interface is configured to cause emission of a signal encoded by the base station, and to receive and decode signals received from other stations. The communications interface 108 is in communication with a receive/transmit unit 128 which is operable to translate signals between the domain used by the controller and the radio signal domain used for wireless communication, the radio signal domain signals being transmitted and received at an antenna 130.

The processors 104 are operable to execute computer programs, in operation of the base station 100. In doing this, recourse is made to data storage facilities provided by a mass storage device 116 which is implemented to provide large-scale data storage albeit on a relatively slow access basis, and will store, in practice, computer programs and, in the current context, communication data, in preparation for execution of an encoding process prior to the placement of encoded data on a transmitted signal.

A Read Only Memory (ROM) 118 is preconfigured with executable programs designed to provide the core of the functionality of the base station 100, and a Random Access Memory 120 is provided for rapid access and storage of data and program instructions in the pursuit of execution of a computer program. Each of these is configured to implement a communications protocol adopted by plural interoperable devices.

A clock 122 provides a timing signal for all other components of the device. The clock signal can be adjusted if required, for synchronization with other devices.

FIG. 3 illustrates the architecture of the user device (or “UE”) 200. As shown in FIG. 3, the UE 200 is a computer apparatus, in structure and function. It may share certain features with general purpose computer apparatus, but some features may be implementation specific, given the specialised function for which the UE 200 is to be put. The reader will understand which features can be of general-purpose type, and which may be required to be configured specifically for use in a user device.

The UE 200 thus comprises a parallel processor 202 configured for specific use in processing large data sets, suitable for use in digital communication. The UE 200 also comprises one or more other processors 204, either generally provisioned, or configured for other purposes such as mathematical operations, audio processing, managing a communications channel, and so on.

An input interface 208 provides a facility for receipt of user input actions. Such user input actions could, for instance, be caused by user interaction with a specific input unit including one or more control buttons and/or switches, a touchscreen, a keyboard, a mouse or other pointing device, a speech recognition unit enabled to receive and process speech into control commands, a signal processor configured to receive and control processes from another device such as a tablet or smartphone, or a remote-control receiver. This list will be appreciated to be non-exhaustive and other forms of input, whether user initiated or automated, could be envisaged by the reader.

Likewise, an output interface 214 is operable to provide a facility for output of signals to a user or another device. Such output could include a display signal for driving a local video display unit (VDU) or any other device.

A communications interface 208 implements a communications channel, whether broadcast or end-to-end, with one or more recipients of signals. In the context of the present embodiment, the communications interface is configured to cause emission and reception of signals via a receive/transmit interface 228 and a radio antenna 230.

The processors 202, 204 are operable to execute computer programs, in operation of the UE 200. In doing this, recourse is made to data storage facilities provided by a mass storage device 216 which is implemented to provide large-scale data storage albeit on a relatively slow access basis, and will store, in practice, computer programs and, in the current context, communication data, in preparation for execution of an encoding process prior to the placement of encoded data on a transmitted signal.

A Read Only Memory (ROM) 218 is preconfigured with executable programs designed to provide the core of the functionality of the UE 200, and a Random Access Memory 220 is provided for rapid access and storage of data and program instructions in the pursuit of execution of a computer program. Each of these is configured to implement a communications protocol adopted by plural interoperable devices.

A clock 222 provides a timing signal for all other components of the device. The clock signal can be adjusted if required, for synchronization with other devices.

The channel in this network is divided into channel units with equal lengths from the temporal domain. The temporal length of a channel unit is measured by one slot. The network is subject to enable data exchange between the BS 100 and the device 200, considering both uplink and downlink. The data is a sequence of packets periodically generated in either the BS 100 or the device 200 with a finite duration. To serve such periodical transmission, the BS is responsible to schedule channel resources in a persistent manner. In detail, the BS would determine the available channel units for the whole sequence of packets by one-shot scheduling before the transmission initializing.

FIG. 4 illustrates the transmission procedure for the downlink case, which is described as follows: in step S1-2 the BS 100 first informs the device about the scheduled channel resource for a sequence of downlink transmissions by delivering a scheduling message; then, in step S1-4 the device 200 responds with an Acknowledgment (ACK) message; and finally, in step S1-6 the BS 100 periodically transmits packets to the device 200 using the scheduled downlink channel.

FIG. 5 illustrates the transmission procedure for the uplink case, which is described as follows: in step S2-2 the device 200 first requests uplink transmission by delivering a request message to the BS 100; in step S2-4 the BS informs the device 200 in a scheduling message as to the allocated uplink channel resources; in step S2-6 the device 200 responds with an ACK message; and finally, in step S2-8 the device 200 periodically transmits packets to the BS on the scheduled resources on the uplink channel.

FIG. 6 provides an example of employing TAPS in a TSN network 300 incorporating a 5G virtual TSN bridge 310. A centralized user configuration (CUC) 302 is employed to represent the control applications, which makes requests to a central network controller (CNC) 304 for TSN communication with specific requirements for different flows via several TSN bridges 306. Among them, the 5G virtual TSN bridge 310 is employed to provide wireless connections among devices, including a 5G Base Station (BS) 312 and a 5G device 314. Given periodic traffic received in the 5G BS from the TSN bridge 306 on a periodic TSN transmission window 308, the 5G BS 312 can schedule periodic channel units 316 for downlink transmission to the device 314 according to TAPS.

FIG. 7 shows examples of a periodic traffic model and a channel model with scheduling via the conventional PS scheme. As illustrated, a transmitter implements an arbitrary packets generation process, which periodically generates packets with a fixed period P_(trff). A line 400 of traffic slots 402 is shown, with the packets 404 indicated as diagonally hatched blocks. On a normalized time scale, the channel scheduling process initializes at a time τ=0, the packets start to arrive at an arbitrary time τ_(trff) from [0, ∞). The channel 420 comprises a plurality of successive channel units 422 (otherwise referred to as slots). Without loss of generality, it is assumed that every generated packet has the same size, and can be completely transmitted via one channel unit 422 (i.e. within a single slot). Scheduled transmissions 424 are indicated in FIG. 7 by diagonally hatched slots 422. Thus, the transmission takes place at the beginning of a slot, and is completed before the slot ends. Scheduling of traffic to the channel is indicated by diagonal hatching on the timeline, with correspondence between traffic 404 and scheduled slots 424 being indicated by single arrowhead arrows. The duration of a slot is T_(sch), and it is further assumed that T_(sch) is smaller than the period of the traffic P_(trff). In other words, the case of channel insufficiency is not considered in this example.

Conventional PS Schemes

Considering a series of traffic packets with a fixed period T_(trff), a BS serves such traffic by scheduling a single series of periodical channels with a fixed cycle c_(fixed) and initializing at slot t_(fixed). According to these two parameters, the index of slot of the mth assigned channel unit w_(fixed) ^(m) can be calculated by:

w _(fixed) ^(m) =t _(fixed)+(m−1)c _(fixed),  (1)

where m∈{1,2, . . . , M}, and M is the total number of packets required to be served. Considering bounded latency and jitter, the channel utilization can be maximized when each packet 404 can correspond one-to-one to a scheduled slot 424, which occurs only if a scheduling cycle c_(fixed) exists whose duration T_(sch)*c_(fixed) is exactly equal to P_(trff) namely, periods-matching event (see FIG. 7). In this case, the minimal transmission delay without jitter can be obtained by allocating periodical slots with the cycle

$\begin{matrix} {c_{fixed} = \frac{P_{triff}}{T_{sch}}} & (2) \end{matrix}$

However, this exact matching between P_(trff) and T_(sch)*c_(fixed) is highly unlikely in reality. Those traffic periods P_(trff) that cannot satisfy this restriction are named as period-mismatching events. FIG. 8 shows three cases (from the top, cases (a), (b) and (c)) which highlight the issues that can arise. To serve this type of traffic, the BS may schedule channel units 402 with a cycle duration T_(sch)*c_(fixed) that is close to the traffic period P_(trff). Unfortunately, the mismatch between the cycle duration of the scheduled channel units T_(sch)*c_(fixed) and the traffic period P_(trff) inevitably causes a temporal gap in each transmission, which may result in the increase of latency as well as jitter, and the waste of channel resources. In details, as illustrated in Case (a) of FIG. 8, slots 424 are scheduled according to a cycle that is slightly bigger than the traffic cycle P_(trff) given by

$\begin{matrix} {{c_{fixed} = \left\lceil \frac{P_{triff}}{T_{Sch}} \right\rceil},} & (3) \end{matrix}$

where ┌*┐ is the ceiling function. It can be seen that the latency gradually increases along with time. As indicated, while the first traffic packet 404-1 is matched to the next available slot 424, the remaining packets are allocated to slots 424 later than the first available slot 422, so giving rise to an ever increasing latency between traffic and schedule. Allocations which result in latency are indicated by double-headed arrows in FIG. 8(a) and also in FIGS. 8(b) and 8(c).

By contrast, in Case (b), slots 422 are scheduled according to a cycle that is smaller than the traffic cycle given by

$\begin{matrix} {{c_{fixed} = 1},2,3,\ldots\mspace{14mu},\left\lfloor \frac{P_{triff}}{T_{Sch}} \right\rfloor,} & (4) \end{matrix}$

where └*┘ is the floor function. In this case, the first and second packets are successfully allocated to the immediately subsequent scheduled slot, but the third packet 404-3 arrives too late to be allocated to the third scheduled slot 424-3. In other words, the third scheduled slot 424-3 is too early to be used, and is thus wasted. This wasted slot is indicated by cross-hatching, and allocation failure by an unfilled arrowhead. The packet 404-3 is thus allocated to the fourth scheduled slot 424-4 instead. Between the third and fourth scheduled slots 424-3, 424-4, there is an intervening, unscheduled slot. Thus, the slot 424-4 allocated to the third packet 404-3 is not the first on the timeline, and so the allocation to slot 424-4 introduces a latency for that packet 404-3. This is indicated with a double-headed arrow.

This allocation continues. As illustrated, several slots are wasted due to the mismatch between arrival of packets for allocation and availability of scheduled slots. Latency does not increase continually; however, jitter is relatively high. This is indicated by instances of schedule slots being too early for allocation of traffic (as indicated by unfilled arrowheads) and the wasted slots being indicated by cross-hatched schedule slots on the timeline. The consequence of this is a later allocation of traffic to slots (with indicative latency), indicated by double arrowheads.

TAPS Scheme

The present disclosure describes a channel scheduling approach, namely TAPS, to enable channel scheduling as seen in FIG. 8(c). It can be seen that slots 424 have been scheduled so that a stream of packets 404 can be allocated to scheduled slots 424 without wasted slots and without latency. This is indicated by single head solid arrowheads.

FIG. 9 illustrates a scheduling procedure of TAPS in accordance with an embodiment. In this procedure, the BS 100 first initializes S3-2 with system factors, namely at least a scheduling window T_(sch) and traffic factors, comprising prior information of traffic pattern, including traffic initial time τ_(trff), and traffic period T_(trff).

If (S3-4) the procedure is being conducted for use on an uplink (i.e. the principal authority on scheduling is at another device, e.g. a BS), then the traffic factors are sent (S3-6) to the associated BS.

The process then (S3-8) calculates a tuple of scheduling factors A_(N)={{right arrow over (α)}₀, {right arrow over (α)}₁, {right arrow over (α)}₂, . . . , {right arrow over (α)}_(N)}

To do this, the BS 100 first derives a set of root factors {right arrow over (α)}₀={t₀, c₀}, referring to the initial slot of the scheduling procedure (root time) and the basic scheduling cycle of channel units (root cycle), respectively. Note that, in contrast with conventional PS schemes, the root cycle c₀ can be varied. To tackle the problem of period-mismatching, the BS then derives a temporal-alignment policy, which revises the root cycle c₀ by postponing or expediting the scheduled channel units. This temporal-alignment policy consists of N number of alignment cycles according to the parameters {{right arrow over (α)}₁, {right arrow over (α)}₂, . . . , {right arrow over (α)}_(N)}, where the parameter of the level-1 alignment {right arrow over (α)}₁ is used to align the root cycle c₀, and the alignment in each step n(n>1) with parameters {right arrow over (α)}_(n) revises the cycle of doing the step n−1 alignment c_(n−1). It will be noted that N refers to the required number of iterations to obtain the ideal solution, rather than a variable, which is jointly determined by the traffic period P_(trff) and scheduling window T_(sch) (to be defined following). These N alignment cycles are obtained by N-level iterative calculations. Any n-level calculation (n∈{1,2, . . . , N}) can obtain a set of factors {right arrow over (α)}_(n)={c_(n), q_(n), w_(n)} with respect to the alignment cycle, the decision of either postponing or expediting, and the index of initial assignment.

Once the scheduling factors are calculated, a scheduling command, containing the factors matrix A_(N) is issued (S3-10) for use by the device in executing the transmission/receiving procedure. Scheduling is then complete.

The transmission/receiving procedure is given in FIG. 10. After the scheduling procedure, transceivers are informed (S4-2) by the tuple of scheduling factors A_(N)={{right arrow over (α)}₀, {right arrow over (α)}₁, {right arrow over (α)}₂, . . . , {right arrow over (α)}_(N)}. A determination (S4-4) is made as to whether a periods-matching event has occurred. A periods-matching event occurs when transceivers solely receive root factors A_(N)={{right arrow over (α)}₀}, where the scheduling is executed similar to the conventional PS scheme. Accordingly, the slot of the mth assignment is obtained by:

φ_(match) ^(m) =t ₀+(m−1)c ₀,  (5)

In that case, the exact slot w_(match) ^(m) is calculated (S4-6) and transmitted (S4-8) for each packet from 0 to M (S4-10, S4-12).

A periods-mismatching event occurs when transceivers receive one or several alignment factors (N>0), where a scheduling policy is executed with level-N alignment cycle (S4-22, S4-24, S4-26), and the slot of the mth assignment (S4-32, S4-34) is obtained (S4-28) by:

φ_(mismatch) ^(m) =t ₀+(m−1)c ₀ +q ₁Φ₁ ^(m),  (6)

Here, q₁∈{−1, 1}. To explain, each received factor q equals either −1 or 1 and this represents decreasing or increasing trends of root cycle c₀ during the mth assignment, respectively. Φ₁ is the exact number of slots to be revised during the mth assignment, which is accumulated over m slots. Φ₁ is obtained by a finite recursion process, which is given by

$\begin{matrix} {\Phi_{n}^{m} = \left\{ \begin{matrix} {\left\lfloor \frac{c_{n} - w_{n} + m - {q_{n + 1}\Phi_{n + 1}^{m}}}{c_{n}} \right\rfloor,} & {{n < N},} \\ {\left\lfloor \frac{c_{n} - w_{n} + m}{c_{n}} \right\rfloor,} & {n = {N.}} \end{matrix} \right.} & (7) \end{matrix}$

Packets are transmitted according to slot assignments (S4-30) as assignments are made.

An example of executing TAPS is given in FIG. 11. The input factors are traffic period P_(trff)=7, and scheduling window T_(sch)=5, and the scheduling factors are A₂={{right arrow over (α)}₀, {right arrow over (α)}₁, {right arrow over (α)}₂}={{1, 1}, {3, 1, 2}, {8, −1, 5}}.

FIG. 11(a) shows the case of transmission along time when solely using a root cycle with parameters in{{right arrow over (α)}₀}, where a relatively large number of channel units are wasted. FIG. 11 Error! Reference source not found. (b) shows the case when using the root cycle aided by the level-1 alignment with parameters {{right arrow over (α)}₀, {right arrow over (α)}₁}, where the granted channel is postponed (q₁=1) every 3 slots. FIG. 11(c) shows the case when using the root cycle aided by the level-1 and the level-2 alignments with full parameters in A₂={{right arrow over (α)}₀, {right arrow over (α)}₁, {right arrow over (α)}₂}, where the event of level-1 alignment is postponed (q₂=1) every 5 slots, and the ideal scheduling performance result is obtained.

An example will now be described of a method to derive every scheduling factor in tuple A_(N). The calculation procedure of these scheduling factors is given in FIG. 12. As before, system factors and traffic factors initialize the process (S5-2).

Root Scheduling Cycle

The root initial slot t₀ and the root scheduling cycle c₀ are first calculated (S5-4). The root initial slot t₀ can be determined by counting the number of transmission windows within duration [0, τ_(trff)], which is given by:

$\begin{matrix} {t_{0} = {\left\lceil \frac{\tau_{triff}}{T_{sch}} \right\rceil + 1}} & (8) \end{matrix}$

Given a traffic cycle P_(trff), the root cycle c₀ is selected by minimizing the gap between the traffic cycle P_(trff) and the root duration with a number x₀ of scheduling windows, which is given as:

$\begin{matrix} {c_{0} = {\underset{x_{0} \in {\{{1,2,\cdots,\infty}\}}}{\arg\;\min}{{P_{triff} - {x_{0}T_{sch}}}}}} & (9) \end{matrix}$

Occasionally, selection of a cycle X₀ results in P_(trff)−X₀T_(sch)=(X₀+1) T_(sch)−P_(trff). In this case, both selections x₀=X₀ and x₀=X₀+1 would have the same performance. For clarity, only the case of selecting the bigger cycle x₀=X₀+1 is considered in the following.

Executing scheduling solely reliant on the root cycle can result in three states, namely that its duration c₀T_(sch) can be exactly equal to, smaller than, or bigger than the traffic period P_(trff). Each state corresponds to one operation as will be described. To ease the succeeding derivation as well as the implementation, root cycle derivation is transformed to a format that independently considers condition for every state (S5-6). This transformation is given as

$\begin{matrix} {c_{0} = \left\{ \begin{matrix} {\frac{P_{triff}}{T_{Sch}},} & {{\left\lbrack {P_{triff}\mspace{14mu}{mod}\mspace{14mu} T_{sch}} \right\rbrack = 0},} \\ {\left\lfloor \frac{P_{triff}}{T_{Sch}} \right\rfloor,} & {{0 < \left\lbrack {P_{triff}\mspace{14mu}{mod}\mspace{14mu} T_{sch}} \right\rbrack \leq \left\lfloor \frac{T_{Sch}}{2} \right\rfloor},} \\ {\left\lceil \frac{P_{triff}}{T_{Sch}} \right\rceil,} & {\left\lfloor {P_{triff}\mspace{14mu}{mod}\mspace{14mu} T_{sch}} \right\rfloor > {\left\lfloor \frac{T_{Sch}}{2} \right\rfloor.}} \end{matrix} \right.} & (10) \end{matrix}$

Accordingly, each state corresponds to one of the operations described below. For state 1, solely employing cycle c₀ (S5-8) already offers the minimal transmission delay and jitter, as well as the maximal channel utilization, thus the iterative calculation terminates here.

Closed-Formed Derivation of Alignment Cycle c_(n) and Decision q_(n)

When states 2 and 3 of the root cycle occur, the mismatch between the scheduled period T_(sch)c₀ and the traffic period P_(trff) produces the waiting gap P_(trff) ^(m)−T_(sch)φ_(mismatch) ^(m) in the mth assignment. This waiting gap increases (in state 2) or decreases (in state 3) along with time according to a fixed variable, namely, level-1 variable δ₁, which is given by

δ₁ =|P _(trff) −c ₀ T _(sch)|.  (11)

The waiting gap can be minimized by postponing and expediting scheduling units for one slot in the overly scheduled state (state 2) and in the insufficiently scheduled state (state 3), respectively. Accordingly, the decision q₁ in level-1 alignment is given by

$\begin{matrix} {q_{1} = \left\{ \begin{matrix} {1,} & {{c_{0} = \left\lfloor \frac{P_{triff}}{T_{Sch}} \right\rfloor},} \\ {{- 1},} & {{c_{0} = \left\lceil \frac{P_{triff}}{T_{Sch}} \right\rceil},} \end{matrix} \right.} & (12) \end{matrix}$

where q₁=1 refers to the action that a scheduled unit is postponed for one slot, and q₁=−1 refers to the action that a scheduled unit is expedited for one slot. To minimize the waiting gap generated by level-1 operator δ₁, the postponing and expediting procedures can occur according to a fixed cycle, namely, level-1 alignment cycle c₁. The derivation of level-1 alignment cycle c₁ and its transformation are given as

$\begin{matrix} \begin{matrix} {c_{1} = \left( {\underset{x_{1} \in {\{{1,2,\cdots,\infty}\}}}{\arg\;\min}{{T_{sch} - {x_{1}\delta_{1}}}}} \right)} \\ {= \left\{ {\begin{matrix} {\frac{T_{sch}}{\delta_{1}},} & {{\left\lbrack {T_{sch}\mspace{14mu}{mod}\mspace{14mu}\delta_{1}} \right\rbrack = 0},} \\ {\left\lfloor \frac{T_{sch}}{\delta_{1}} \right\rfloor,} & {0 < \left\lbrack {T_{sch}\mspace{14mu}{mod}\mspace{14mu}\delta_{1}} \right\rbrack \leq \left\lfloor \frac{\delta_{1}}{2} \right\rfloor} \\ {\left\lceil \frac{T_{sch}}{\delta_{1}} \right\rceil,} & {\left\lbrack {T_{sch}\mspace{14mu}{mod}\mspace{14mu}\delta_{1}} \right\rbrack > {\left\lfloor \frac{\delta_{1}}{2} \right\rfloor.}} \end{matrix},} \right.} \end{matrix} & (13) \end{matrix}$

The cycle alignment is complete if the condition of [T_(sch) mod δ₁]=0 is obtained. Otherwise, the cycle alignment is executed by a finite recursion process until the condition [T_(sch) mod δ_(N)]=0 is satisfied. For any level-n alignment (n∈{2,3, . . . , N}) (S5-20, S5-28), the difference variable of waiting gap during each transmission, namely level-n variable δ_(n), can be calculated (S5-22) using the derived level-(n−1) cycle c_(n−1), which is given by

δ_(n) =|c _(n−1)δ_(n−1) −T _(sch)|.  (14)

The decision to postpone or expedite q_(n) is given by

$\begin{matrix} {q_{n} = \left\{ \begin{matrix} {1,} & {{c_{n - 1} = \left\lfloor \frac{T_{sch}}{\delta_{n - 1}} \right\rfloor},} \\ {{- 1},} & {c_{n - 1} = {\left\lceil \frac{T_{sch}}{\delta_{n - 1}} \right\rceil.}} \end{matrix} \right.} & (15) \end{matrix}$

where q_(n)=1 refers to the action that postpones level-(n−1) alignment for one slot, and q_(n)=−1 refers to the action that expedites level-(n−1) alignment for one slot.

So, a level-n cycle c_(n) can be said to be the frequency to minimize the gap generated by level-n variable δ_(n), which can be derived (S5-24) as:

$\begin{matrix} \begin{matrix} {c_{1} = \left( {\underset{x_{n} \in {\{{1,2,\cdots,\infty}\}}}{\arg\;\min}{{T_{sch} - {x_{n}\delta_{n}}}}} \right)} \\ {= \left\{ {\begin{matrix} {\frac{T_{sch}}{\delta_{n}},} & {{\left\lbrack {T_{sch}\mspace{14mu}{mod}\mspace{14mu}\delta_{n}} \right\rbrack = 0},} \\ {\left\lfloor \frac{T_{sch}}{\delta_{n}} \right\rfloor,} & {0 < \left\lbrack {T_{sch}\mspace{14mu}{mod}\mspace{14mu}\delta_{n}} \right\rbrack \leq \left\lfloor \frac{\delta_{n}}{2} \right\rfloor} \\ {\left\lceil \frac{T_{sch}}{\delta_{n}} \right\rceil,} & {\left\lbrack {T_{sch}\mspace{14mu}{mod}\mspace{14mu}\delta_{n}} \right\rbrack > {\left\lfloor \frac{\delta_{n}}{2} \right\rfloor.}} \end{matrix},} \right.} \end{matrix} & (16) \end{matrix}$

This iterative calculation is completed (S5-26) when obtaining a level-N alignment cycle c_(N) satisfying the condition [T_(sch) mod δ_(N)]=0.

Heuristic Derivation of Alignment Initial Index w_(n)

For a case requiring N alignments, it is necessary to know the tuple of scheduling factors A_(N)={{right arrow over (α)}₀, {right arrow over (α)}₁, . . . , {right arrow over (α)}_(N)} (S5-30).

A_(n)={{right arrow over (α)}₀, {right arrow over (α)}₁, . . . , {right arrow over (α)}_(n)} is defined as a subset of the tuple A_(N), which is composed of the first n+1 vectors in A_(N). Given a known subset A_(n−1), the objective is to derive the exact initial index w_(n) for any nth alignment, which is located in the nth vector {right arrow over (α)}_(n).

The calculation procedure of the exact initial index w_(n) in the nth alignment is given in FIG. 13. Accordingly, first an estimated initial index {tilde over (w)}_(n) is calculated by using the known parameters in A_(n−1). Then, a tuple Ã_(n) is temporarily constructed, including the exact factors {{right arrow over (α)}₀, {right arrow over (α)}₁, . . . , {right arrow over (α)}_(n−1)} and the vector {right arrow over (α)}_(n)={c_(n), {tilde over (w)}_(n), q_(n)} including the estimated initial index {tilde over (w)}_(n). Finally, a limited performance time is evaluated by setting A_(n)=Ã_(n), and gradually correcting {tilde over (w)}_(n) if the tuple Ã_(n) is not the ideal solution.

To derive the exact initial index w_(n) of the nth alignment, the scheduling slot of the ith assignment φ_(mismatch) ^(m) (m=i|A_(n−1)) is calculated by increasing the variable i along the order I, which is given by

$\begin{matrix} {I = \left\{ \begin{matrix} {\left\lbrack {2,3,\ldots\mspace{14mu},{c_{n} + 1}} \right\rbrack,} & {{n = 1},} \\ {\left\lbrack {w_{n - 1},{w_{n - 1} + 1},\ldots\mspace{14mu},{w_{n - 1} + c_{n} + 1}} \right\rbrack,} & {n > 1.} \end{matrix} \right.} & (17) \end{matrix}$

It is restated that φ_(mismatch) ^(m)(m=i|A_(n−1)) can obtained via Equations (6) and (7) conditioning on the known factors A_(n−1). After that, the gap θ_(n)(i|A_(n−1)) between the time of φ_(mismatch) ^(m)(m=i|A_(n−1)) and the time of the ith packet is calculated:

θ_(n)(i|A _(n−1))=(φ_(mismatch) ^(m)(m=i|A _(n−1))−1)T _(sch)−τ_(trff)−(i−1)T _(trff).  (18)

Then, it is considered whether the obtained gap θ_(n)(i|A_(n−1)) satisfies the condition of (θ_(n)(i|A_(n−1))<0 or θ_(n)(i|A_(n−1))≥T_(sch)). If true, the estimated initial index, {tilde over (w)}_(n)=i, is obtained. Otherwise, this evaluation process is repeated by setting i:=i+1 until a variable i is found such that its gap θ_(n)(i|A_(n−1)) satisfies (θ_(n)(i|A_(n−1))<0 or θ_(n)(i|A_(n−1))≥T_(sch)). Accordingly, the estimated tuple Ã_(n)={{right arrow over (α)}₀, {right arrow over (α)}₁, {right arrow over (α)}₂, . . . , {c_(n), {tilde over (w)}_(n), q_(n)}} is obtained. Then, the scheduling slot of the jth assignment φ_(mismatch) ^(m)(m=j|Ã_(n)) is calculated, conditioning on the estimated tuple Ã_(n) by increasing the variable j along the order J, which is given by:

$\begin{matrix} {J = \left\{ \begin{matrix} {\left\lbrack {{\overset{\sim}{w}}_{n},{\overset{\sim}{w} + 1},\ldots\mspace{14mu},{{\overset{\sim}{w}}_{n} + c_{n} + 1}} \right\rbrack,} & {{n < N},} \\ {\left\lbrack {{\overset{\sim}{w}}_{n},{{\overset{\sim}{w}}_{n} + 1},\ldots\mspace{14mu},{{\overset{\sim}{w}}_{n} + {\gamma\; c_{n}} + 1}} \right\rbrack,} & {n = {N.}} \end{matrix} \right.} & (19) \end{matrix}$

In equation (19), γ is an integer constant that dominates the accuracy of the Nth alignment, which can be selected from the range [2,3, . . . , +∞]. According to the described example, selecting γ=3 generally guarantees the ideal solution in any situation.

Similar to equation (18), the gap θ_(n)(j|Ã_(n)) between the time of φ_(mismatch) ^(m)(m=j|Ã_(n)) and the time of the jth packet is calculated:

θ_(n)(j|Ã _(n))=(φ_(mismatch) ^(m)(m=j|Ã _(n))−1)T _(sch)−τ_(trff)−(j−1)T _(trff).  (20)

Then, an evaluation is conducted as to whether the gap θ_(n)(j|Ã_(n)) satisfies the condition 0·θ_(n)(j|Ã_(n))<T_(sch) for any j∈J. if not, {tilde over (w)}_(n):={tilde over (w)}_(n)−1 is executed until an initial index w_(n)={tilde over (w)}_(n) is obtained that can satisfy that condition.

Once {tilde over (w)}_(n)<w_(n−1), it is also necessary to revise w_(n−1) by setting w_(n−1): ={tilde over (w)}_(n). Finally, this process is repeated to calculate the initial index w_(n) for any nth alignment until n=N, and the exact scheduling factors A_(N)={{right arrow over (α)}₀, {right arrow over (α)}₁, . . . , {right arrow over (α)}_(N)} are obtained.

Time-Redundant TAPS Scheme

The above-described TAPS scheme can completely eliminate the transmission delay produced by the mismatching between traffic period and scheduling period. However, in practice, a packet may suffer from a producing delay in the transmitter before it is ready to be transmitted. Once this occurs, this packet may miss the scheduled channel unit, which results in packet discard, or an occupation of the channel unit that should be scheduled to the packet after the delayed one. For the benefit of this disclosure, these cases are named as a producing delay disaster; they inevitably increase the overall transmission delay. With an intention to address this, the present disclosure provides a Time-Redundant TAPS (TR-TAPS) scheme. An example of use of this is shown in FIG. 14.

The BS 100 first determines the scheduling policy based on the original TAPS scheme, where its mth assignment is φ_(ACPS) ^(m)=φ_(mismatch) ^(m) in the period-mismatching case and φ_(ACPS) ^(m)=φ_(match) ^(m) in the period-matching case. Then, the BS 100 schedules the number L of successive channel units right after φ_(ACPS) ^(m) and before φ_(ACPS) ^(m+1). If the number of available slots between φ_(ACPS) ^(m) and φ_(ACPS) ^(m+1) was smaller than L (i.e., the channel units are insufficient to serve redundant scheduling), whole channel units would be scheduled. Without considering this insufficient case, the exact scheduled slot of the mth assignment with the TR-TAPS scheme is obtained by:

$\begin{matrix} {\varphi_{{TR} - {ACPS}}^{m} = {\varphi_{ACPS}^{{\lfloor\frac{m - 1}{L}\rfloor} + 1} + \left\lbrack {m - {1\mspace{14mu}{mod}\mspace{14mu} L}} \right\rbrack}} & (21) \end{matrix}$

Examples of executing the conventional TR-PS scheme and the TR-TAPS scheme are given in FIG. 14(a) and FIG. 14(b), respectively. As can be seen in FIG. 14(b), the 2nd packet cannot be allocated to the originally scheduled slot by the TAPS scheme, since it suffers from a producing delay. By using the TR-TAPS scheme, this packet captures the redundantly scheduled slot, rather than being discarded or occupying other's channel units, thus the producing delay disaster is avoided.

TAPS Scheme with Hybrid Automatic Repeat Request (HARQ)

In cellular networks, once data units are missed or are erroneously decoded, retransmissions can be primarily handled by a HARQ mechanism defined in the MAC layer, and be complemented by the retransmission functionality of the radio link control protocol. The HARQ can be executed in either asynchronous or synchronous manner: asynchronous HARQ involves retransmissions occurring at any time (based on dynamic scheduling), whereas synchronous HARQ involves retransmissions occurring at a fixed time after the previous transmission. When asynchronous HARQ is employed, the TAPS scheme can be directly employed to schedule the channel units for the primary transmissions. When synchronous HARQ is employed, the TAPS scheme can be employed to schedule the channel units for both primary transmissions and retransmissions. The exact scheduled slot of the mth assignment in the kth retransmission can be obtained by

φ_(ACPS,k) ^(m)=φ_(ACPS) ^(m) +kT _(retran)  (22)

where T_(retran) is the window length of each retransmission.

Transmission Duplicated TR-TAPS Scheme Transmission duplication is generally used to improve communication service reliability when transmission is not reliable enough with a single path link. This duplication adds link redundancy at the cost of increased channel resource usage. Previously, several different approaches have been proposed to enable redundant transmission paths.

These methods obtain transmission gain by providing transmission diversity from the domain of time, frequency, space, or a combination of them. Here, a duplication method is considered which relies on a strict principle of time hopping along with a flexible choice of channels in frequency domain.

An example therefore considers that there are J channels that can be used for transmission duplication with each being divided into channel units with the same size. The offset between the original subcarrier and the subcarrier carrying the duplicate data is calculated by the BS. The exact scheduled slot of the mth assignment in the jth channel is denoted by φ_(j) ^(m). The scheduling policy in the first channel is based on the disclosed TAPS scheme, where its mth assignment is Ψ_(ACPS) ^(m)=φ_(mismatch) ^(m) in the period-mismatching case and φ_(ACPS) ^(m)=φ_(match) ^(m) in the period-matching case. The exact scheduled slot of the mth assignment in the jth channel is obtained by

φ_(j) ^(m)=φ_(ACPS) ^(m) +j−1  (23)

Examples of executing the TD-TR-TAPS scheme is given in FIG. 14(c). As can be seen in FIG. 14(c), the second packet misses the scheduled channel unit in channel 1, but captures the one in channel 2. By doing so, the transmission duplication not only improves the reliability of the communication service, but also solves the problem of the producing delay disaster.

Performance Evaluation

To evaluate performance of the disclosed approaches, a network is considered in which the channel is slotted to channel units with a fixed duration T_(sch)=144 μs. Three baseline schemes are considered, namely, PS-1, PS-2, and PS-3, which schedule channel units based on fixed scheduling cycles

${c_{fixed} = \left\lfloor \frac{P_{triff}}{T_{Sch}} \right\rfloor},\left\lfloor \frac{P_{triff}}{2T_{Sch}} \right\rfloor,{{and}\mspace{14mu}\left\lfloor \frac{P_{triff}}{3T_{Sch}} \right\rfloor}$

that contribute to channel utilizations about 90%, 45%, and 30%, respectively.

FIG. 15 plots the average delay and jitter of TAPS scheme and conventional PS schemes versus traffic period, including several sampled values P_(trff)=0.16*{1, 2, 3, . . . , 12}. As shown in FIG. 15, except for the period-matching event when P_(trff)=1.44 ms (i.e., scheduled with cycle c_(fixed)=1.44/0.144=10), the above described TAPS scheme considerably outperforms the conventional PS schemes in terms of both delay and jitter.

FIG. 16 compares cumulative distribution function (CDF) of delay and jitter between the TAPS scheme disclosed herein and the conventional PS schemes. The simulation considers all values of the traffic period within the range P_(trff)∈[0.144, 2] ms. As can be seen, embodiments of the TAPS scheme disclosed herein can considerably reduce the delay and jitter in many cases.

Taking the specific traffic period P_(trff)=1.6 ms as an example, FIG. 16 plots the average delay of conventional PS schemes versus the reciprocal of channel utilization. Different reciprocal of channel utilization is obtained by setting different scheduling cycle c_(fixed), where the smallest one is obtained by using the biggest cycle c_(fixed)=11, and the biggest one is obtained by using the smallest cycle c_(fixed)=1. As shown in FIG. 17, to obtain the same performance as the disclosed TAPS scheme, the conventional PS needs to consume 12 times more channel resources than the TAPS.

In FIG. 18, the above described TAPS method is implemented, as well as conventional PS. The computational cost of each is analyzed in terms of execution time. The illustrated examples are based on implementations performed in MATLAB. The execution time takes into account the time consumed during calculating the exact index of the assignment channel using equations (6) and (7) for each transmission. The reader will note that the execution time increases with the increase of the required number of alignments. Luckily, the TAPS scheme with only 3 alignments can guarantee the optimal scheduling for all scenarios in cellular networks. It is further observed that TAPS with 1, 2, and 3 alignments (0.442, 0.485, and 0.505 μs) respectively consume 2%, 12%, and, 17% execution times more than that of the conventional PS (0.433 μs).

Technical advantages of certain embodiments disclosed herein include the following.

Certain embodiments aim to minimize waiting delay and jitter conducted by mismatching persistent scheduling, and obtaining performance approaching the theoretically optimal.

Certain embodiments aim to maximize channel utilization, and obtaining performance approaching the theoretically optimal.

Certain embodiments aim to exploring transmission duplication with a view to reducing waiting delay and jitter conducted by persistent scheduling.

Certain embodiments offer reliability improvement as well as latency reduction for critical applications.

It will be understood that the invention is not limited to the embodiments above-described and various modifications and improvements can be made without departing from the concepts described herein. Except where mutually exclusive, any of the features may be employed separately or in combination with any other features and the disclosure extends to and includes all combinations and sub-combinations of one or more features described herein. 

1. A method of scheduling traffic on a wireless communication channel, the wireless communication channel being defined in a communications medium for communications between devices, the method comprising: ascertaining a description of demanded traffic on the channel; develop a scheduling policy for the channel on the basis of the description of demanded traffic, to establish a root scheduling cycle for transmission on the channel and one or more alignment parameters defining the manner in which demanded traffic is to be scheduled; and outputting the root cycle and the one or more alignment parameters to enable scheduling of demanded traffic on the channel.
 2. A method in accordance with claim 1 performed at a first device, for communication with a second device, wherein the demanded traffic comprises traffic from the first device to the second device, and wherein the method further comprises issuing the outputted root cycle and the one or more alignment parameters to the second device so that the second device can determine a schedule therefrom.
 3. A method in accordance with claim 1 performed at a first device, for communication with a second device, wherein the demanded traffic comprises traffic from the second device to the first device, the ascertaining comprising receiving at the first device a transmission request from the second device, and wherein the method comprises sending a channel grant request to the second device from the first device, the channel grant request comprising the outputted root cycle and the one or more alignment parameters to the second device so that the second device can determine a schedule therefrom.
 4. A method in accordance with claim 1, comprising receiving a traffic scheduling request and setting a root scheduling cycle on the basis of a recursive process with respect to attributes of a received traffic scheduling request.
 5. A method in accordance with claim 4 wherein the recursive process is finite.
 6. A method in accordance with claim 5 comprising ceasing the recursive process on meeting an optimality condition.
 7. A wireless communications device for establishing wireless communication with another device, the wireless communications device comprising a scheduler for scheduling traffic on a wireless communication channel, the wireless communication channel being defined in a communications medium for communications between devices, the scheduler comprising: a traffic demand determiner, for ascertaining a description of demanded traffic on the channel; a scheduling policy developer operable to calculate, for the channel on the basis of the description of demanded traffic, a root scheduling cycle for transmission on the channel and one or more alignment parameters defining the manner in which demanded traffic is to be scheduled; wherein the scheduler is operable to output the root cycle and the one or more alignment parameters to enable scheduling of demanded traffic on the channel.
 8. A device in accordance with claim 7, configured to transmit traffic to another device, wherein the device is operable to send outputted root cycle and the one or more alignment parameters to said other device so that the other device can determine a schedule therefrom.
 9. A device in accordance with claim 7, configured to be operable to receive a transmission request from another device, the traffic demand determiner being operable to process a received transmission request in order to derive a description of demanded traffic on the channel, and wherein the device is operable to send a channel grant request to the other device, the channel grant request comprising the outputted root cycle and the one or more alignment parameters so that the other device can determine a schedule therefrom.
 10. A device in accordance with claim 7, wherein the scheduling policy developer is operable to set a root scheduling cycle on the basis of a recursive process with respect to attributes of a received traffic scheduling request.
 11. A device in accordance with claim 10 wherein the recursive process is finite.
 12. A device in accordance with claim 11 wherein the scheduler is operable to cease the recursive process on meeting an optimality condition.
 13. A wireless communications device for establishing wireless communication with another device, the wireless communications device being operable to receive a root cycle and one or more alignment parameters generated by a method in accordance with claim 1, and a scheduler operable to generate a channel access schedule for the said device on the basis of the received root cycle and one or more alignment parameters.
 14. A computer program product comprising computer executable instructions which, when executed on a computing device, cause the device to perform a method in accordance with claim
 1. 